import Vue from 'vue';

// v-dialogDrag: 弹窗拖拽
Vue.directive('dialogDrag', {
    bind(el, binding, vnode, oldVnode) {
        const dialogHeaderEl = el.querySelector('.el-dialog__header');
        const dragDom = el;
        dialogHeaderEl.style.cursor = 'move';

        dialogHeaderEl.onmousedown = (e) => {
            // 鼠标按下，计算当前元素距离可视区的距离
            const disX = e.clientX - dragDom.offsetLeft;
            const disY = e.clientY - dragDom.offsetTop;


            document.onmousemove = function (e) {
                // 通过事件委托，计算移动的距离
                let l = e.clientX - disX;
                let t = e.clientY - disY;

                // // 移动当前元素
                // dragDom.style.left = `${l + styL}px`;
                // dragDom.style.top = `${t + styT}px`;

                if (l < 0) {
                    l = 0
                } else if (l > document.documentElement.clientWidth - dragDom.offsetWidth) {
                    l = document.documentElement.clientWidth - dragDom.offsetWidth;
                }
                if (t < 0) {
                    t = 0
                } else if (t > document.documentElement.clientHeight - dragDom.offsetHeight) {
                    t = document.documentElement.clientHeight - dragDom.offsetHeight;
                }
                //移动当前元素
                dragDom.style.left = l + 'px';
                dragDom.style.top = t + 'px';
                //将此时的位置传出去
                // binding.value({
                //     x: e.pageX,
                //     y: e.pageY
                // })
            };

            document.onmouseup = function (e) {
                document.onmousemove = null;
                document.onmouseup = null;
            };
        }
    }
})

// v-dialogDragWidth: 弹窗宽度拖大 拖小
Vue.directive('dialogDragWidth', {
    bind(el, binding, vnode, oldVnode) {
        const dragDom = binding.value.$el.querySelector('.el-dialog');

        el.onmousedown = (e) => {

            // 鼠标按下，计算当前元素距离可视区的距离
            const disX = e.clientX - el.offsetLeft;

            document.onmousemove = function (e) {
                e.preventDefault(); // 移动时禁用默认事件

                // 通过事件委托，计算移动的距离
                const l = e.clientX - disX;
                dragDom.style.width = `${l}px`;
            };

            document.onmouseup = function (e) {
                document.onmousemove = null;
                document.onmouseup = null;
            };
        }
    }
})
// Vue.directive('drag', //自定义指令                                      JS
//     {
//         bind: function (el, binding) {
//             let oDiv = el; //当前元素
//             let self = this; //上下文
//             oDiv.onmousedown = function (e) {
//                 //鼠标按下，计算当前元素距离可视区的距离
//                 let disX = e.clientX - oDiv.offsetLeft;
//                 let disY = e.clientY - oDiv.offsetTop;

//                 document.onmousemove = function (e) {
//                     //通过事件委托，计算移动的距离
//                     let l = e.clientX - disX;
//                     let t = e.clientY - disY;
//                     if (l < 0) {
//                         l = 0;
//                     } else if (l > document.documentElement.clientWidth - oDiv.offsetWidth) {
//                         l = document.documentElement.clientWidth - oDiv.offsetWidth;
//                     }
//                     if (t < 0) {
//                         t = 0;
//                     } else if (t > document.documentElement.clientHeight - oDiv.offsetHeight) {
//                         t = document.documentElement.clientHeight - oDiv.offsetHeight;
//                     }
//                     //移动当前元素
//                     oDiv.style.left = l + 'px';
//                     oDiv.style.top = t + 'px';
//                     //将此时的位置传出去
//                     binding.value({
//                         x: e.pageX,
//                         y: e.pageY
//                     })
//                 };
//                 document.onmouseup = function (e) {

//                     document.onmousemove = null;
//                     document.onmouseup = null;
//                 };
//             };
//         }
//     }
// );
